// spoj12943
// 题意：要选n(<=20)个不同的正整数，使得和小于等于m(<=100000)，求方案数。
//
// 题解：我们令选出的n个数为a[i]，并且设a[1]<a[2]<a[3]<...。
//       我们再令b[i]=a[n-i+1]-a[n-i], b[1]=a[1]。
//       这个可以画个图看下。
//       然后sigma(a[i])=sigma(i*b[i])
//       这里只有要求b[i]>0。所以就得到dp，设f[i][j]表示取了前i个数，
//       和为j（转移的时候按b想），得到：
//         f[i][j] = f[i - 1][j - i] + f[i][j - i]
//       分别表示现在第i个数是新的第i个数，或者是将之前第i个数+1。
//       最后答案就是sigma(f[n][i]), i<=m。
//
// run: $exec < input
#include <iostream>

long long const mo = 1000000007;
int const maxn = 22;
int const maxm = 100006;
long long f[maxn][maxm];
int n, m;

int main()
{
	std::ios::sync_with_stdio(false);
	f[0][0] = 1;
	for (int i = 1; i < maxn; i++)
		for (int j = i; j < maxm; j++)
			f[i][j] = (f[i - 1][j - i] + f[i][j - i]) % mo;
	int T; std::cin >> T;
	while (T--) {
		std::cin >> n >> m;
		long long ans = 0;
		for (int i = 1; i <= m; i++)
			ans = (ans + f[n][i]) % mo;
		std::cout << ans << '\n';
	}
}

